#!/bin/bash

# 前后端自动打包脚本
# 作用：构建前端，集成到后端，后端可以直接在IDEA中启动运行，主要是为了测试前后端打包到服务器后，是否能正常运行，请使用git bash here 来执行这个脚本

# 彩色输出函数
function log_info() {
    echo -e "\033[1;32m[INFO] $1\033[0m"
}

function log_error() {
    echo -e "\033[1;31m[ERROR] $1\033[0m"
}

function log_warn() {
    echo -e "\033[1;33m[WARN] $1\033[0m"
}

# 检查命令是否存在
function check_command() {
    if ! command -v $1 &> /dev/null; then
        log_error "$1 命令未找到，请安装后再运行此脚本"
        exit 1
    fi
}

# 设置目录路径
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
FRONTEND_DIR="$SCRIPT_DIR/we_ai_front"
BACKEND_DIR="$SCRIPT_DIR/we_ai_back"

# 检查必要工具
log_info "检查环境..."
check_command node
check_command npm
check_command java
check_command mvn
check_command 7z


# 步骤1: 构建前端
log_info "开始构建前端项目..."
cd "$FRONTEND_DIR" || { log_error "前端目录不存在: $FRONTEND_DIR"; exit 1; }

log_info "删除node_modules..."
rm -rf node_modules

log_info "安装前端依赖..."
npm install || { log_error "安装前端依赖失败"; exit 1; }

log_info "构建前端项目..."
npm run build || { log_error "前端构建失败"; exit 1; }

if [ ! -d "dist" ]; then
    log_error "前端构建产物目录不存在，构建可能失败"
    exit 1
fi

log_info "前端构建成功！"

# 步骤2: 集成前端到后端
log_info "集成前端到后端..."
cd "$BACKEND_DIR" || { log_error "后端目录不存在: $BACKEND_DIR"; exit 1; }

rm -rf src/main/resources/static

# 确保静态资源目录存在
mkdir -p "src/main/resources/static"

# 复制前端构建产物到后端
log_info "复制前端文件到后端静态资源目录..."
cp -r "$FRONTEND_DIR/dist/"* "src/main/resources/static/" || { log_error "复制前端文件失败"; exit 1; }

log_info "前端产物以构建并复制到后端，请在IDEA中启动后端进行测试！"